package top.ddltech.algorithm.sort;

import top.ddltech.algorithm.util.SortUtil;

/**
 * 选择排序
 */
public class SelectionSort {

    /**
     * 将a[]按升序排列
     *
     * @param a 数组
     */
    public static void sort(Comparable[] a) {
        // 数组长度
        int N = a.length;
        // 将a[i]和a[i+1..N]中最小的元素交换
        for (int i = 0; i < N; i++) {
            // 最小元素的索引
            int min = i;
            for (int j = i + 1; j < N; j++) {
                if (SortUtil.less(a[j], a[min])) {
                    min = j;
                }
            }
            SortUtil.exch(a, i, min);
        }
    }
}
